﻿#include "Define.h"

/**
@brief 커서의 위치를 변경한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@param const POSITION & p
@return void
*/
void MoveCursor( const POSITION &p )
{
	COORD pos = { p.x_, p.y_ };
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

/**
@brief POSITION p의 위치에 text를 출력한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@param const POSITION & p
@param const char & text
@return void
*/
void DrawObject( const POSITION &p, const char &text )
{
	MoveCursor(p);
	cout << text;
}

/**
@brief POSITION p의 위치에 item을 출력한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@param const POSITION & p
@param const int & item
@return void
*/
void DrawObject( const POSITION &p, const int &item )
{
	MoveCursor(p);
	cout << item;
}

/**
@brief 화면의 POSITION p의 위치에 있는 문자를 조사한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@param const POSITION & p
@return int
*/
int Getchcon( const POSITION &p)
{
	COORD Cur = { p.x_, p.y_ };
	TCHAR Char;
	DWORD dwRead;

	ReadConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE),&Char,1,Cur,&dwRead);
	
	return Char;
}

/**
@brief 임의의 키 하나가 눌러질 때까지 대기한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@return void
*/
void WaitAnyKey()
{
	int ch;
	ch= _getch();
	if (ch==0xE0 || ch==0) {
		_getch();
	}
}

/**
@brief 커서 타입을 변경 한다.
@date 2013/01/14
@author 임진영(deviak@deviak.com)
@param const CURSOR_TYPE & c
@return void
*/
void SetCursorType( const CURSOR_TYPE &c )
{
	CONSOLE_CURSOR_INFO CurInfo;

	switch (c) {
	case CURSOR_NO:
		CurInfo.dwSize=1;
		CurInfo.bVisible=FALSE;
		break;
	case CURSOR_SOLID:
		CurInfo.dwSize=100;
		CurInfo.bVisible=TRUE;
		break;
	case CURSOR_NORMAL:
		CurInfo.dwSize=20;
		CurInfo.bVisible=TRUE;
		break;
	default:
		CurInfo.dwSize=1;
		CurInfo.bVisible=FALSE;
	}
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &CurInfo);
}
